package com.fg.cloud.manager.entry.order;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fg.cloud.common.annotation.Column;
import com.fg.cloud.common.convert.CustomBigDecimalSerialize;
import com.fg.cloud.common.finals.Compare;
import com.fg.cloud.manager.entry.BaseEntity;
import com.fg.cloud.manager.entry.factory.vo.FactoryProcessVo;

/**
 * @author ：
 * @date ： 2017年6月21日 下午4:47:59
 * @Desc ：订单信息
 */
public class OrderInfoEntity extends BaseEntity {
	private static final long serialVersionUID = 2161181251617142812L;
	
	@Column
	private String orderNo;// 订单编号
	
	@Column
	private Long facId;// 商厂ID
	
	@Column
	private Long ageId;// 经销商ID
	
	@Column(compare=Compare.LIKE,value="o.ageName")
	private String ageName ; 
	
	
	@JsonSerialize(using=CustomBigDecimalSerialize.class)
	private BigDecimal amountTotal;// 总金额
	
	@JsonSerialize(using=CustomBigDecimalSerialize.class)
	private BigDecimal amountPay;// 应付金额
	
	@JsonSerialize(using=CustomBigDecimalSerialize.class)
	private BigDecimal needPay;// 还需支付金额
	
	@Column
	private Integer orderStatus;// 订单状态：0，待审核；1，待财务审核；2，待发货；3，待收货；4，确认收货；10，作废
	
	@Column
	private Integer payStatus;// 付款状态：0，未付款；1，部分付款；2，已经付款
	
	private Date orderDate;// 下单日期
	
	private Date deliveryDate;// 交货日期
	
	private String deliveryDateStr ; //交货日期字符串
	
	private Long receiveId;// 收货地址ID
	
	private String receiveInfo;// 收货地址信息
	
	private Integer isSpecialPrice;// 是否有特批价格：0，否；1，是
	
	@JsonSerialize(using=CustomBigDecimalSerialize.class)
	private BigDecimal specialPrice ; //特批价格
	
	@JsonSerialize(using=CustomBigDecimalSerialize.class)
	private BigDecimal taxation ; //税金
	
	@JsonSerialize(using=CustomBigDecimalSerialize.class)
	private BigDecimal expressFee ; //快递费
	
	private Integer orderSource ; //订单来源 0 经销商下单  1 厂商下单 2 预订单转订单      务必显示
	
	@JsonIgnore
	private Integer passStatus;// 数据传输状态：0，未传输；1，已传输
	
	@JsonIgnore
	private Integer erpReceive;// ERP系统是否已获取 0 未获取 1 已获取
	
	private Long invoiceId;// 发票类型ID
	
	private String invoiceName;//发票名称
	
	private String invoiceInfo ;//发票信息
	
	private String remark;// 备注描述
	
	@JsonIgnore
	private Date completeTime ; //订单完成时间

	private String details ; //明细字符串
	
	//非实体类中的属性
	private List<OrderDetailEntity> listDetails; // 明细集合
	
	private List<OrderCheckEntity> operatorRecords ;//订单操作日志

	private List<FactoryProcessVo> processList ; //订单流程对象

	public BigDecimal getNeedPay() {
		return needPay;
	}

	public void setNeedPay(BigDecimal needPay) {
		this.needPay = needPay;
	}

	public String getOrderNo() {
		return orderNo;
	}

	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	public Long getFacId() {
		return facId;
	}

	public void setFacId(Long facId) {
		this.facId = facId;
	}

	public Long getAgeId() {
		return ageId;
	}

	public void setAgeId(Long ageId) {
		this.ageId = ageId;
	}

	public String getAgeName() {
		return ageName;
	}

	public void setAgeName(String ageName) {
		this.ageName = ageName;
	}

	public BigDecimal getAmountTotal() {
		return amountTotal;
	}

	public void setAmountTotal(BigDecimal amountTotal) {
		this.amountTotal = amountTotal;
	}

	public BigDecimal getAmountPay() {
		return amountPay;
	}

	public void setAmountPay(BigDecimal amountPay) {
		this.amountPay = amountPay;
	}

	public Integer getOrderStatus() {
		return orderStatus;
	}

	public void setOrderStatus(Integer orderStatus) {
		this.orderStatus = orderStatus;
	}

	public Integer getPayStatus() {
		return payStatus;
	}

	public void setPayStatus(Integer payStatus) {
		this.payStatus = payStatus;
	}

	public Date getOrderDate() {
		return orderDate;
	}

	public void setOrderDate(Date orderDate) {
		this.orderDate = orderDate;
	}

	public String getDeliveryDateStr() {
		return deliveryDateStr;
	}

	public void setDeliveryDateStr(String deliveryDateStr) {
		this.deliveryDateStr = deliveryDateStr;
	}

	public Date getDeliveryDate() {
		return deliveryDate;
	}

	public void setDeliveryDate(Date deliveryDate) {
		this.deliveryDate = deliveryDate;
	}

	public Long getReceiveId() {
		return receiveId;
	}

	public void setReceiveId(Long receiveId) {
		this.receiveId = receiveId;
	}

	public String getReceiveInfo() {
		return receiveInfo;
	}

	public void setReceiveInfo(String receiveInfo) {
		this.receiveInfo = receiveInfo;
	}

	public Integer getIsSpecialPrice() {
		return isSpecialPrice;
	}

	public void setIsSpecialPrice(Integer isSpecialPrice) {
		this.isSpecialPrice = isSpecialPrice;
	}

	public BigDecimal getSpecialPrice() {
		return specialPrice;
	}

	public void setSpecialPrice(BigDecimal specialPrice) {
		this.specialPrice = specialPrice;
	}

	public BigDecimal getTaxation() {
		return taxation;
	}

	public void setTaxation(BigDecimal taxation) {
		this.taxation = taxation;
	}

	public BigDecimal getExpressFee() {
		return expressFee;
	}

	public void setExpressFee(BigDecimal expressFee) {
		this.expressFee = expressFee;
	}

	public Integer getOrderSource() {
		return orderSource;
	}

	public void setOrderSource(Integer orderSource) {
		this.orderSource = orderSource;
	}

	public Integer getPassStatus() {
		return passStatus;
	}

	public void setPassStatus(Integer passStatus) {
		this.passStatus = passStatus;
	}

	public Integer getErpReceive() {
		return erpReceive;
	}

	public void setErpReceive(Integer erpReceive) {
		this.erpReceive = erpReceive;
	}

	public Long getInvoiceId() {
		return invoiceId;
	}

	public void setInvoiceId(Long invoiceId) {
		this.invoiceId = invoiceId;
	}

	public String getInvoiceName() {
		return invoiceName;
	}

	public void setInvoiceName(String invoiceName) {
		this.invoiceName = invoiceName;
	}

	public String getInvoiceInfo() {
		return invoiceInfo;
	}

	public void setInvoiceInfo(String invoiceInfo) {
		this.invoiceInfo = invoiceInfo;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public Date getCompleteTime() {
		return completeTime;
	}

	public void setCompleteTime(Date completeTime) {
		this.completeTime = completeTime;
	}

	public String getDetails() {
		return details;
	}

	public void setDetails(String details) {
		this.details = details;
	}

	public List<OrderDetailEntity> getListDetails() {
		return listDetails;
	}

	public void setListDetails(List<OrderDetailEntity> listDetails) {
		this.listDetails = listDetails;
	}

	public List<OrderCheckEntity> getOperatorRecords() {
		return operatorRecords;
	}

	public void setOperatorRecords(List<OrderCheckEntity> operatorRecords) {
		this.operatorRecords = operatorRecords;
	}

	public List<FactoryProcessVo> getProcessList() {
		return processList;
	}

	public void setProcessList(List<FactoryProcessVo> processList) {
		this.processList = processList;
	}


}
